Rails 3:数据库调用has_many:通过关系

时间:2011-10-09 23:45:43

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

我有一系列名为@posts的帖子。帖子模型has_many:感受:通过=> :feelingships

如何获取帖子数组并将其缩小到仅具有特定感觉的帖子?

我尝试了下面的代码,但它不起作用:(

@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 个答案:

答案 0 :(得分:1)

@happy_posts = Post.joins(:feelings).where("feelings.title = ?", "happy")

这应该有效。

答案 1 :(得分:0)

@specific_feelings_post=Post.join(:feelings).where("feelings.title= ?","specific_feeling")

与bricker上面写的相同。问号是避免SQL注入。 简而言之,数据库的安全性由Rails中的ActiveRecord处理。通过这样做,您将创建正确转义的SQl,并且不受SQL注入的影响。