我的Rails应用程序中有一个模型- User。我希望在rails控制台中列出所有的关联,以及关联的类型(1-1,1-多)。
发布于 2011-05-04 22:00:58
User.reflect_on_all_associations
这将返回一个关联数组,如下所示:
#<ActiveRecord::Reflection::AssociationReflection:0x00000105575548 @macro=:has_many, @name=:posts, @options={}, @active_record=User(id: integer, login: string), @collection=false>
示例代码:
reflections = User.reflect_on_all_associations
reflections.each do |reflection|
puts ":#{reflection.macro} => :#{reflection.name}"
end
发布于 2016-08-19 05:45:45
使用gem pry-rails,您将能够访问模型、其列和关系。将其包含在您的Gemfile
中,然后运行bundle
。当您在pry控制台中时,可以使用命令show-models
。您将获得有关所有模型的信息。
您还可以运行show-model (Model_Name)
来获取有关特定模型的信息
发布于 2013-10-18 22:53:33
将这个添加到/lib下的某个位置。例如clone_deep.rb。
module CloneDeep
def clone_deep
kopy = clone
self.class.reflect_on_all_associations.each do |association|
next if association.macro == :belongs_to
cloned_object = case association.macro
when :has_many
self.send(association.name).collect { |item| item.clone_deep }
when :has_one
self.send(association.name) && self.send(association.name).clone_deep
else
clone
end
kopy.send("#{association.name}=", cloned_object)
end
return kopy
end
end
在config/initializers/文件夹下创建新的初始化器。在此文件中粘贴
ActiveRecord::Base.send(:include, CloneDeep)
现在,您可以克隆具有所有has_one和hos_many关联的模型。
cloned_person = person.clone_deep
cloned_person.save
https://stackoverflow.com/questions/5884494
复制相似问题