在Rails JSON API调用中包含两个连接表

时间:2014-03-27 06:05:48

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

尝试连接两个表(具有多态关系)时,我收到以下Active Record Association错误,并在JSON API响应中包含来自两个表的所有数据:

Association named 'categories' was not found; perhaps you misspelled it?

以下是我要调用的控制器操作:

def index

    @items = Item.includes(:categories)
    respond_to do |format|
      format.json { render :json => @items.to_json }
    end

end

以下是我想加入的两个模型:

class Category < ActiveRecord::Base

    attr_accessible :name

    has_many :items, :as => :linkable

end

class Item < ActiveRecord::Base

    attr_accessible :due_date, :linkable_id, :linkable_type, ...

    belongs_to :linkable, :polymorphic => true, :counter_cache => true

end

具体来说,我想返回数据库中的每个Item及其Category。我已经尝试了所有我能想到的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你试过了吗?

def index
    @items = Item.includes(:linkable).where(:linkable_type => 'Category')
    respond_to do |format|
      format.json { render :json => @items.to_json(include: :linkable) }
    end
end

您的关联名称实际上是:可链接的Item模型,而不是:categories(特别是因为它是belongs_to所以它将是:category)。