Ruby on Rails模型混乱

时间:2015-01-17 19:57:08

标签: ruby-on-rails

我遇到了以下代码,这些代码超出了我的想法。我在前3天努力完全掌握它,但无法做到。

class TestUser < ActiveRecord::Base
   self.table_name = 'garden'

   belongs_to :account
   accepts_nested_attributes_for :garden

上面的代码对我来说是不可理解的。

1 个答案:

答案 0 :(得分:1)

class TestUser < ActiveRecord::Base
   self.table_name = 'garden'
   authenticates_with_sorcery!

   belongs_to :account
   accepts_nested_attributes_for :garden

逐行分解:

class TestUser < ActiveRecord::Base

这是一个名为TestUser的类,它继承自ActiveRecord::Base。连接到活动记录的轨道中的所有模型(即具有数据库表)具有相同的签名。继承ActiveRecord::Base提供TestUser模型并具有一些神奇的能力。在http://guides.rubyonrails.org/active_record_basics.html

了解详情
self.table_name = 'garden'

这一行表示TestUser模型应连接的表格为garden。默认情况下,TestUser模型链接到test_users表。 这条线正在改变这种行为。

实际上,它应该是gardens,因为所有表名都应该是复数; gardens表用于存储有关许多花园对象的信息。

http://apidock.com/rails/ActiveRecord/ModelSchema/ClassMethods/table_name

了解table_name
authenticates_with_sorcery!

此行表示系统使用sorcery gem进行身份验证。在http://railscasts.com/episodes/283-authentication-with-sorcery

了解有关此内容的详情
belongs_to :account

这一行表示TestUser对象与belongs_to模型的关系Account。有了这种关系,您就可以使用test_user's方法找到test_user.account帐户。这假设test_userTestUser模型的实例。即test_user = TestUser.new。在http://guides.rubyonrails.org/association_basics.html#the-belongs-to-association

了解有关belongs_to关联的详情
accepts_nested_attributes_for :garden

此行表示您可以在保存Garden对象时保存TestUser对象上的属性。在http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

了解accepts_nested_attributes_for的更多信息

最后提供一些建议,帮助您更好地了解rails世界中的所有内容:通过全面的rails教程来深入了解rails概念。强烈推荐免费提供https://www.railstutorial.org/book上的Rails教程书。