model / sql加入rails 3

时间:2011-04-12 15:36:22

标签: ruby-on-rails ruby ruby-on-rails-3

如何使用以下模型加入对象?

User
has_many messages

Message
belongs_to user

Thread
has_many messages

我正在尝试获取属于用户X的所有主题。我想加入message.user_id = user.user_idthread.message_id = message.message_id。我可以使用find_by_sql执行此操作,但我正在尝试避免这种情况。

由于

2 个答案:

答案 0 :(得分:2)

假设您的Message模型也belongs_to :thread,那么您应该能够在has_many :threads, :through => :messages模型中添加User。然后你可以user.threads来获取所有相关的线程。

答案 1 :(得分:0)

以下内容应该有效:(请注意,我添加了您遗失的message belongs_to :thread

class User < ActiveRecord::Base
  has_many :messages
  has_many :threads, :through => :messages
end

class Message < ActiveRecord::Base
  belongs_to :user
  belongs_to :thread
end

class Thread < ActiveRecord::Base
  has_many :messages
  has_many :users, :through => :messages
end

这应该允许您执行my_user.threadsmy_thread.users

您可以在Rails GuidesAPI上详细了解has_many :through