Rails有没有办法操纵数据库字段和相应的访问方法没有“漂亮的生成器”?
我希望用户在有特权的情况下能够操纵数据库结构,即至少添加或删除列。特权用户应该可以“添加新”一些列。
说我有一个对象/表格artist
,它应该“动态”接收列作为“出生日期”,“已玩过”,“已售出的副本”
不确定它是不是重复。需要做出初步决定 Rails是否阻止让用户执行 o以开头。 (如果是这种情况=>肯定是一些noSQL解决方案)
在纯ruby中,至少可以轻松地将属性动态添加到现有的模型/类中,如此
Test.class_eval do; attr_accessor "new_attribute"; end
和
Test.new.new_attribute = 2
将按预期返回=> 2
为了创建或操作自定义输入掩码/模型:我是否可以手动以与生成器相同的方式运行,并手动调用ActiveRecord::Migration
等方法add_column
以及为ORM创建getter / setter-methods?
如果是或否,在两种情况下,它们都是从哪开始的?
谢谢!
答案 0 :(得分:0)
我不知道允许Object动态创建新列的任何优雅方式。这不是一个好的应用程序设计,会导致数据库的低效率。
您可以在Rails中使用ActiveRecord associations实现类似的功能。这是使用相关属性表的Artist模型的简单示例。
class Artist < ActiveRecord::Base
has_many :attributes
end
class Attribute < ActiveRecord::Base
belongs_to :artist
end
通过此关联,您可以允许Artist类创建/编辑/销毁属性。 ActiveRecord将使用数据库中的外键来跟踪两个模型之间的关系。
如果这对您不起作用,那么您的下一个最佳选择是查看NoSQL数据库,例如MongoDB,这样可以在架构中提供更大的灵活性。使用NoSQL,您可以在没有预定义模式的情况下方便地插入数据。