5

モデルで.to_jsonを使用するときに、関連するモデルを条件付きで含める方法を見つけようとしています。

簡略化した例では、次の2つのモデルを想定しています。

class Foo < ActiveRecord::Base
  has_many :bars
end

class Bar < ActiveRecord::Base
  belongs_to :foo
  attr_accessible :bar_type
end 

私は現在持っています:

f = Foo.find "3"
j = f.to_json(:include => { :bars => {:some, :attributes}}

そしてこれは機能します。方法を見つけるために必要なのは、bar_type =='what?'を持つbarインスタンスのみを含めることです。

条件付きでバーインスタンスをプルする方法があることを望んでいます。あるいは、スコープを使用して、json出力に含まれるバーを制限することもできます。

4

2 に答える 2

3

条件が変わらない場合は、次のようにすることができます。

class Foo < ActiveRecord::Base
  has_many :bars
  has_many :what_bars, :class_name=>"Bar", 
                       :foreign_key=>:foo_id, 
                       :conditions=>"bars.bar_type = 'what'"
end

f = Foo.find "3"
j = f.to_json(:include => :what_bars)
于 2012-04-25T16:03:47.580 に答える
0

たぶん、json_builder https://github.com/dewski/json_builderのようなものを使用して

于 2012-04-25T14:58:39.747 に答える