两个术语"属性"和"列"似乎可以互换使用......但我的猜测是列是框,属性是框中的内容。
答案 0 :(得分:4)
A"专栏"是数据库表中的列,而"属性是"是对象的外部可见面。
"属性"是一个模型和一个"列"用于数据库中的表。
这是模型的架构:
create_table "retreats", force: :cascade do |t|
t.string "title"
t.string "tagline"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
在这里"撤退"是数据库中的表格,其中包含以下列" title","标语"," created_at"," updated_at"。
此表有一个模型Retreat,它具有属性" title","标语"," created_at"和" updated_at"。您可以在this页面上获取有关属性的更多信息。
它们很相似,但由于它们的背景,它们是不同的。
编辑1:
数据库表中的一行由Rails中的对象映射。该对象的属性值是该行中列的值。
作为vojic points out,列包含所有对象的属性值。
答案 1 :(得分:0)
ActiveModel 为方便起见提供了attributes API
,它将实例变量映射到哈希以便于使用。 https://blog.metova.com/rails-5-attributes-api
ActiveRecord 扩展ActiveModel以自动将columns
映射到attributes
,您仍然可以定义没有列的自定义属性,例如这个好例子。 http://api.rubyonrails.org/classes/ActiveRecord/Attributes/ClassMethods.html
因此,在标准的Rails应用程序中,ActiveRecord模型会自动将列转换为属性,您仍然可以添加自己的属性。您还可以使用其他ActiveModel,这些ActiveModel具有使用相同属性API的持久性(或非持久性)机制,因此标准Rails组件可以伪装成ActiveRecord。