ActiveRecord :: Reflections方法 - modelname_ids

时间:2015-08-06 10:47:51

标签: ruby-on-rails activerecord rails-activerecord

我想知道如何从反射中获取复数ids方法 我有以下课程

class Tale < ActiveRecord::Base
  has_many :x
  has_many :y

我用

Tale.reflect_on_associations 

访问关联x和y

我可以用

x.klass #=> x
x.class_name #=> "x"
x.plural_name #=> "xs"

我需要的是一种从反射中获取方法association_name_ids的方法

例如

:x_ids

所以我可以按如下方式使用它

tale_instance_object.send(:x_ids)

1 个答案:

答案 0 :(得分:1)

使用String#singularize

tale_instance_object.send(x.name.to_s.singularize + "_ids") # => [1, 2, 3, ...]

此外,您可以使用内置的#ids_reader方法:

my_model_instance.association(:x).ids_reader # => [1, 2, 3, ...]