似乎我很少(如果有的话)在rails模型中看到或使用ruby构造函数。
我的假设是因为rails为你设置了很多东西,所以对初始化代码的需求要低得多。
虽然模型中的构造函数没有很好的用例吗?
答案 0 :(得分:4)
构造函数没有任何问题,只是它们几乎不需要它们。 构造函数的主要原因是设置默认值。设置默认属性很容易在数据库级别完成
add_column :users, :admin, :boolean, :default => false
可能需要的另一件事是存在/创建关联模型,这可以在构造函数/初始化器中完成,但更常见的是使用rails钩子来设置before_create :populate_children, :ensure_parent_exists
(其中populate_children和ensure_parent_exists是私有模型方法)或类似的东西。这种方法意味着任何初始化逻辑都可以划分为逻辑方法(例如,每个初始化位的单独方法),还有一些可以在其他时间调用after_save :ensure_parent_exists
,因此可以提供更大的灵活性
答案 1 :(得分:1)
没有理由你不能。大多数重要的东西都是由ActiveRecord为你处理的,但是如果你想要运行某种特定的初始化代码,你可以定义自己的构造函数 - 只需确保它调用super
。