2012-04-25 29 views
5

Tôi đang cố gắng tìm cách để có điều kiện bao gồm các mô hình được liên kết khi tôi sử dụng .to_json trên mô hình.ActiveRecord to_json: có điều kiện bao gồm các liên kết

Trong một ví dụ đơn giản, giả sử hai mô hình sau:

class Foo < ActiveRecord::Base 
    has_many :bars 
end 

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

Tôi hiện có:

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

và các công trình này. Những gì tôi cần để tìm một cách để làm là chỉ bao gồm các trường hợp thanh có bar_type == 'những gì?'

Tôi hy vọng có một cách để có điều kiện kéo trong các trường hợp thanh, hoặc thậm chí có thể sử dụng một phạm vi để hạn chế các thanh được bao gồm trong đầu ra json.

Trả lời

3

Nếu điều kiện không thay đổi, bạn có thể làm điều này:

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) 
+0

cách tiếp cận thú vị. Tôi sẽ cung cấp cho một thử và lấy lại cho bạn :) – jaydel

Các vấn đề liên quan