我正在尝试了解ORM并寻找以下解释的示例:
表映射到类, 行映射到对象, 列映射到对象属性
我理解表映射到类,但是映射到对象的行的术语和映射到对象属性的列让我感到困惑。
答案 0 :(得分:3)
我发现实际的例子帮助最好。试试这个:
class House < ActiveRecord::Base
attr :length, :width, :finish, :price, :available
end
my_house = House.new(:length => 23, :width => 12, :finish => 'siding',
:price => '$100,000.00', :available => false)
my_house = House.find(1)
puts my_house.length, my_house.width, my_house.price,
my_house.finish, my_house.available?
create table house(
length Integer,
width Integer,
finish Varchar(255),
price Text,
available Boolean)
# Note this is generic SQL, adapt as needed
# to your implementation - SQLserver, Oracle, mySQL, etc.
insert into house (length,width,finish,price,available)
values (23, 12, 'siding', '$100,000.00', false)
my_house = select * from house where id = 1
答案 1 :(得分:2)
因此,使用ActiveRecord作为示例,假设您有一个表格帖子,列'id','title','date'。帖子表中有2行。
posts = Post.all
posts将是一个长度为2的数组。数组中的每个对象都是其中一行,并且是Post类的实例。
posts[0]
这是数组中的第一个对象,它是posts
表中第一行的表示。
posts[0].title
这将返回第一个对象的title
属性,即title
表的第一行中的posts
列。
这有帮助吗?
答案 2 :(得分:2)
在我画画时,这里出现了一些很好的答案,但仍然希望我的简单方法能有所帮助:
(因为你用'rails'标记了你的问题,我应用了rails代码)
class User < ActiveRecord::Base
attr_accessor :first_name, :email
end
puts User.inspect # => class
puts u = User.create(:first_name => 'name',
:email => 'em@il.com') # => object (class instance)
puts u.name # => object's attribute
DB: