2011-01-24 38 views
0

我无法在rails中进行连接,我不知道这里出了什么问题。我的类别是:如何在rails中创建没有sql代码的连接?

class Serie < ActiveRecord::Base
has_many :user_serie
has_many :user, :through => :user_serie
end

class UserSerie < ActiveRecord::Base
belongs_to :serie
belongs_to :user
end

class User < ActiveRecord::Base
has_many :user_serie
has_many :serie, :through => :user_serie
end

和选择是: @series = Serie.all :joins => :user

所以产生的选择是:

SELECT "series".* FROM "series" 
INNER JOIN "user_series" ON "series"."id" = "user_series"."serie_id" 
INNER JOIN "users" 
ON 0 
AND "users" 
AND 'id' 
AND "users"."id" 
AND 0 
AND "user_series" 
AND 'user_id' 
AND "user_series"."user_id" 
AND "users"."id" = "user_series"."user_id" 

我能做些什么来使这个选择有效?

我试着与复数的has_many,但后来我有这样的错误: 未初始化的常量意甲:: UserSeries

回答

0

你有错的关系,应该是:

class Serie < ActiveRecord::Base 
has_many :user_series 
has_many :users, :through => :user_series 
end 

class UserSerie < ActiveRecord::Base 
belongs_to :serie 
belongs_to :user 
end 

class User < ActiveRecord::Base 
has_many :user_series 
has_many :series, :through => :user_series 
end 

当你获得与未初始化类的异常,然后使用显式:类名如下:

class Serie < ActiveRecord::Base 
has_many :user_series, :class_name => "UserSerie" 
# or "::UserSerie", i'm not 100% sure which one, rather just as I wrote 
has_many :users, :through => :user_series 
end 
+0

它与复数的条款,但仍生成的SQL是怪异的东西.. – tiagodll

+0

我不确定它为什么如此丑陋的sql,也许你在Gemfile中有一些讨厌的宝石?不知道在这里,我需要在另一个问题更多的信息。给我一个标志,这很有趣。 – m4risU