我已经在这方面工作了一段时间,我似乎无法找到错误的位置。
我有一个用户模型(:名称,:密码,:电子邮件)和事件模型(:名称,等)和兴趣模型(:名称)[>所有单数<]
然后我创建了两个连接表 - >用户兴趣和活动兴趣;每个都不包含主键,并且分别仅包含user_id / interest_id和event_id / interest_id。 [>复数<]
我的模型包含HABTM关系如下
user.rb => has_and_belongs_to_many :interests
event.rb => has_and_belongs_to_many :interests
interest.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :events
events_interests.rb => has_and_belongs_to_many :interests
has_and_belongs_to_many :events
users_interests.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :interests
Whew..ok所以我想创建一个named_scope,找到与特定用户有共同兴趣的所有事件。这是一些有人帮我的代码。
named_scope :shares_interest_with_user, lambda {|user| { :joins => "LEFT JOIN
events_interests ei ON ei.event_id = Event.id " +
"LEFT JOIN users_interests ui ON ui.interest_id = ei.interest_id",
:conditions => ["ui.user_id = ?", user] }}
当我从控制器运行时=>
@user = User.find(1)
@events = Event.shares_interest_with_user(@user)
我收到SQL错误:“没有这样的列:Event.id:SELECT”events“。* FROM”events“LEFT JOIN events_interests ei ON ei.event_id = ...........”< / p>
现在我确定事件模型有一个id,我认为我的所有列名都正确。谁能看到有什么遗失?