我有两个相关的表A和B.A有a_many到B和B belongs_to A.但是我在A中有一个字段存储说A.account_number。 A与表C完全无关,表C是账户表。 D有帐户详细信息,如地址和其他详细信息。 C与D具有has_many关系并且属于C.现在在A和B中使用acts_as_api。我写了一个大查询,几乎取出了我需要的每个字段,除了帐户和帐户详细信息。如何使用acts_as_api获取此详细信息。我尝试使用调用范围子资源方法。但它不起作用。有任何想法吗。请分享。我是铁杆新手。这是我的代码。 我们说吧
A-> item_people
B-> item_people_roles
C-> people_accounts
D-> people_account_details
Class ItemPeople
class ItemPeople < ActiveRecord::Base
has_many:item_people_roles, class_name => "ItemPeopleRole", :dependent => :destroy
accepts_nested_attributes_for :item_people_roles, :allow_destroy => true, :reject_if => :all_blank
acts_as_api
api_accessible :bill_rewriting do |bill|
bill.add :account_number
bill.add :item_people_roles
end
end
Class ItemPeopleRoles
class ItemPeopleRole < ActiveRecord::Base
attr_accessor :messages
belongs_to :item_people, :class_name => "ItemPeople"
acts_as_api
api_accessible :bill_rewriting do |bill|
bill.add :item_people_id, :as => :shipper_id, :if => lambda{|u|u.role_type_code=="SHIPPER"}
bill.add :item_people_id, :as => :consignee_id, :if => lambda{|u|u.role_type_code=="CONSIGNEE"}
bill.add :item_people_id, :as => :ship_to_id, :if => lambda{|u|u.role_type_code=="SHIPTO"}
end
end
C类人
class People < ActiveRecord::Base
# This model has account number
# account type fields
end
D类People_Details
class PeopleDetails < ActiveRecord::Base
# This model has address1, address2, name1, name2
end
现在根据人们在itempeopleroles中的角色,我需要在ItemPeople的acts_as_api中获取人和人的详细信息。希望我现在很清楚
答案 0 :(得分:1)
实现此目的的最佳方法是通过模板Proc / lambda
api_accessible :public do |template|
template.add lambda { |record,options|
# look at options, and use those to build your custom data
return [the correct data]
}, :as => :a_magic_field
end
然后在你的控制器中,获得一个结果集,&#34;注释&#34;它,然后渲染它。
raw_results = Model.where(... some where conditions ....)
results = raw_results.as_api_response(:public, ... [some other options to appear in your lambda])
最后呈现它:
respond_to do |format|
format.json {render :json => results, :callback => params[:callback]}
format.xml {render :xml => results}
end
有了这个,你可以在lambda中编写你想要的任何代码来导航你的数据结构,无论它是如何布局的。它将如何表现是另一个问题......
答案 1 :(得分:0)
(我暂时无法添加评论)。
如果A有A.account_number而C是会计科目表,为什么你不能在A和C之间有关联(甚至A和D以及C和D)?
我的“回答”是添加这些关联,然后使用正确的:include语法。我真的没看到act_as_api提供的内容。