Rails 3: база данных вызывает has_many: сквозные отношения - PullRequest
0 голосов
/ 10 октября 2011

У меня есть массив сообщений под названием @posts.Модель сообщения has_many: sense: through =>: sensehips.

Как мне взять массив сообщений и сузить его до постов с определенным чувством?

Я попробовал кодниже, но это не работает: (

@specific_feeling_posts = @posts.feeling.where(:feeling => "happy") 

Модели

class Post < ActiveRecord::Base
  has_many :feelingships
  has_many :feelings, :through => :feelingships
  belongs_to :user
end

class Feeling < ActiveRecord::Base
  has_many :feelingships
  has_many :posts, :through => :feelingships
end

class Feelingship < ActiveRecord::Base
  belongs_to :post
  belongs_to :feeling
end

Ответы [ 2 ]

1 голос
/ 10 октября 2011
@happy_posts = Post.joins(:feelings).where("feelings.title = ?", "happy")

Это должно сработать.

0 голосов
/ 10 октября 2011
@specific_feelings_post=Post.join(:feelings).where("feelings.title= ?","specific_feeling")

Это та же самая строка, что и у bricker. Вопросительный знак состоит в том, чтобы избежать внедрения SQL. Короче говоря, безопасность базы данных обрабатывается ActiveRecord в Rails. Сделав это, вы создадите правильно экранированный SQl и будете защищены от внедрения SQL.

...