我有一个模型用户。现在,我需要来自控制台的所有关联细节。 并需要知道它是一个人还是一个人。是否有任何方法可以做到这一点?从控制台获取导轨关联
19
A
回答
36
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
0
因为我是新用户,我无法弄清楚/回复到其他人的帖子。我会注意到,在检查关联中的任何更改之前,您需要重新加载rails控制台。
0
添加这个一些在/ 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
0
你可以为任何特定的做到这一点: - 用户= User.reflect_on_association(:user_profile) 和 user.macro
2
使用宝石pry-rails,你将能够访问模式,其专栏和关系。将其包含在您的Gemfile
中,然后运行bundle
。当您在您的pry控制台中时,您可以使用命令show-models
。并且您将获得有关所有模型的信息。
您还可以运行show-model (Model_Name)
获得有关具体型号
相关问题
- 1. 导轨关联的5获取关联
- 2. 如何显示来自导轨控制台的关联
- 3. 使用导轨控制台
- 4. 写入导轨控制台
- 5. 导轨 - 通过控制台
- 6. 从控制台查看导轨测试
- 7. 导轨活动记录关联,使用从控制台构建填充外键
- 8. 开关导轨控制器
- 9. 轨控制台
- 10. 导轨关联has_many_and_belongs_to
- 11. 关联关系在控制台
- 12. 在控制台上打印(导轨s)
- 13. 导轨迁移脚本VS控制台
- 14. 更改导轨控制台颜色
- 15. 导轨控制台是否动态?
- 16. 导轨控制台不起作用
- 17. 退出导轨控制台与'n'
- 18. 导轨控制台(pry)和mongodb
- 19. 重新加载导轨控制台
- 20. 无法打开导轨控制台
- 21. 在轨控制台
- 22. 无法启动导轨服务器或导轨控制台
- 23. 无法启动导轨服务器或导轨控制台
- 24. 如何在非导轨项目中使用导轨控制台?
- 25. 导轨控制台无法在导轨中工作3.2.1
- 26. 导轨服务器工作但“导轨控制台”不工作
- 27. 导轨3.2.6打开导轨控制台错误
- 28. 获取控制器轨
- 29. 获取控制器轨
- 30. 导轨从查看到控制器获取值
Thanks.This是为我工作的信息。 :D:D – shajin 2011-05-04 14:21:04
只是为了澄清,它不适用于模型的实例。它适用于模型类。我实际上需要关联记录的所有细节,而不是模式级别。 – 2016-11-09 19:24:37