我有一个特别需要能够从内部代码(当一些动作发生IE)调用Rails的命令。 我需要一个模型与特定字段(其将通过形状来确定)来创建并运行在端所生成的迁移。
因此,这种形式我会创造的所有字段,然后将导致与创建一个模型与它的某些领域(表和列)
因此,有一种方法来调用rails generate model NAME [field[:type][:index] field[:type]
和bundle exec rake db:migrate
从控制器/红宝石代码内?
我有一个特别需要能够从内部代码(当一些动作发生IE)调用Rails的命令。 我需要一个模型与特定字段(其将通过形状来确定)来创建并运行在端所生成的迁移。
因此,这种形式我会创造的所有字段,然后将导致与创建一个模型与它的某些领域(表和列)
因此,有一种方法来调用rails generate model NAME [field[:type][:index] field[:type]
和bundle exec rake db:migrate
从控制器/红宝石代码内?
而不是每个类别的一个表,这里有一个更关系数据库-Y的方法:
create table category (
id serial primary key,
name text not null
);
create table attribute (
id serial primary key,
name text not null
);
create table item (
id serial primary key,
category_id integer not null references category (id),
description text
);
create table category_attribute (
attribute_id integer not null references attribute (id),
category_id integer not null references category (id)
);
create table item_attribute (
attribute_id integer not null references (attribute.id),
item_id integer not null references item (id),
value text
);
当你创建一个类,你在存储它的名字(以及任何其他一到一个属性) category
表。 您确保attribute
表中有一个条目每个属性的类别有,然后用category_attribute
表的属性链接到该类别。
当您添加一个类别中的新成员,您可以使用item
表的主要事情存储有关项目和item_attribute
表来存储它的每一个属性的值。 因此,与汽车和宠物接近你提到,你的数据库可能看起来像
category
id | name
----+------
1 | car
2 | pet
attribute
id | name
----+------------
1 | make
2 | breed
3 | model_year
4 | name
category_attribute
attribute_id | category_id
--------------+-------------
1 | 1
2 | 2
3 | 1
4 | 2
item
id | category_id | description
----+-------------+----------------
1 | 1 | Hyundai Accent
2 | 2 | Fuzzy kitty
item_attribute
attribute_id | item_id | value
--------------+---------+---------
1 | 1 | Hyundai
3 | 1 | 2007
2 | 2 | DSH
4 | 2 | Sam
这种方法可以感觉相当不明显的,因为它不符合你使用Rails模型使用风格“与许多因素之一对象”。 这是关系型数据库是如何工作的,但是。 我相信有一些神奇的ActiveRecord你可以做,使对象/关系的翻译多一点自动的,但我不记得它叫什么的时刻。