Ruby on rails Rails模型JSON不显示关联
我有以下型号:Ruby on rails Rails模型JSON不显示关联,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有以下型号: class Office < ActiveRecord::Base belongs_to :city belongs_to :company end class Company < ActiveRecord::Base has_one :acquirer has_many :offices has_many :cities, through: :offices end class City < ActiveRecord::Base
class Office < ActiveRecord::Base
belongs_to :city
belongs_to :company
end
class Company < ActiveRecord::Base
has_one :acquirer
has_many :offices
has_many :cities, through: :offices
end
class City < ActiveRecord::Base
has_many :offices
end
我真的不知道怎么了
我真正想要的是显示company\u id和city\u id列。我有一个Acquisitions控制器,它用JSON显示这些列,即使没有respond_with方法。所以我不明白为什么它在这种情况下默认工作,而不是在这种情况下。我将Rails 4.0.0与Ruby 2.0.0一起使用。您应该始终使用integer来定义外键。 回到你的问题,你可以使用
respond_with Office.all(:include => [:company, :city])).as_json(:include => [:company,:city])
但是,如果您有复杂的JSON响应,我建议您查看,或者让它工作起来。保持控制器不变,我将index.json.jbuilder从:
json.array!(@offices) do |office|
json.extract! office, :headquarters
json.url office_url(office, format: :json)
end
致:
不确定你们对这个修复有何看法?它可能与您的问题无关,但它是否打算用字符串类型定义
公司id
和城市id
?是的。这是一个好的做法吗?默认情况下,ActiveRecord将主键定义为整数。所以如果你不改变主键的类型,你应该用整型列而不是字符串来引用它。是的,我确实用数据库迁移中的execute“ALTER TABLE COMPANYS ADD primary key(name);”
将主键改成了字符串。我应该学会阅读,我的错误。我看不出来。嗯,那没用。我的json文件中有一个[]。我确实意识到我有Rails 4附带的jbuilder gem,因此更改jbuilder文件确实让我得到了结果。
respond_with Office.all(:include => [:company, :city])).as_json(:include => [:company,:city])
json.array!(@offices) do |office|
json.extract! office, :headquarters
json.url office_url(office, format: :json)
end
json.array!(@offices) do |office|
json.extract! office, :headquarters, :company_id, :city_id
json.url office_url(office, format: :json)
end