0

Rails 3.2 を使用しています。次のコードがあります。

# month.rb                        
class Month < ActiveRecord::Base
  has_many :days

  def map_markers
    days.as_json(
      :only => :position,
      :include => {
        :day_shops => { 
          :only => :position, 
          :include => {
            :shops => {
              :only => [ :name ]
            }
          }
        }
      }
    )
  end
end

# day.rb
class Day < ActiveRecord::Base
  belongs_to :month
  has_many :day_shops
  has_many :shops, :through => :day_shops
end

# day_shop.rb
class DayShop < ActiveRecord::Base
  belongs_to :day
  belongs_to :shop
end

# shop.rb
class Shop < ActiveRecord::Base
end

私が達成しようとしているshopのは、day_shopモデル (throughテーブル) でモデルをラップすることですが、上記のように JSON でラップすると、次のようになります。

undefined method 'shops' for #<DayShop id: 87, day_id: 26, shop_id: 1, position: 1>

私の予想される JSON は次のようになります。

- position: 1
  :day_shops:
  - position: 1
    :shops:
    - name: Company A
  - position: 2
    :shops:
    - name: Company B
- position: 2
  :day_shops:
  - position: 1
    :shops:
    - name: Company A
  - position: 2
    :shops:
    - name: Company C

メソッドを変更するにはどうすればよいですか? ありがとう。

4

1 に答える 1

1

DayShop belongs to a Shopメソッドにを含めshopsている間。変更先:day_shopmap_markermap_marker

def map_markers
  days.as_json(
    :only => :position,
    :include => {
      :day_shops => { 
        :only => :position, 
        :include => {
          :shop => {
            :only => [ :name ]
          }
        }
      }
    }
  )
end
于 2013-03-02T10:30:44.557 に答える