如何从兄弟表中添加Active Admin索引列?

时间:2015-05-19 03:21:55

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

在我的Customers_Rewards活动管理员中,我当前显示Customer_Rewards和Customer数据表中的列,但我还想显示Order数据表中的列(例如store_id)。

ActiveAdmin.register CustomerReward do
    menu :parent=>"Customers", :priority=>10, :label=>"Activated Rewards"

  index do
    selectable_column
    column("Customer ID"){|u| u.customer.id }
    column("Store ID"){|u| u.order.store_id }  #DOES NOT WORK
    column("First name"){|u| u.customer.first_name }
    column("Last name"){|u| u.customer.last_name }
    column("Email"){|u| u.customer.email }
    column :reward
    column :points_redeemed
    column :expires_at
    column :redeemed_at
    bool_column :is_active
    actions
  end
 _____________________________________________________
class CustomerReward < ActiveRecord::Base
  belongs_to :customer
end

class Customer < ActiveRecord::Base
  has_many :addresses, :order => 'is_active desc, is_default desc'
  has_many :customer_rewards
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :customer
end
I get an error message of: 
 undefined method `order' for #<Customer:0x007fb1dc2e3160>

1 个答案:

答案 0 :(得分:0)

u.order.store_id表示你告诉Rails从order表和orders表之间的关联中获取customer_rewards,但是没有这样的关系。

你可以做的是打电话

u.customer.orders

将返回与CustomerReward对象(u)相关的客户的所有订单。

我不知道你会得到具体的store_id,因为

u.customer.orders

将返回一个集合,因此会有一个store_id的集合 - 您可以通过调用

来检查它
u.customer.orders.pluck(:store_id) # same as map(&:store_id)