Ruby on rails RubyonRails-自动创建对象
在我的应用程序中,我有Ruby on rails RubyonRails-自动创建对象,ruby-on-rails,ruby,object,model-view-controller,methods,Ruby On Rails,Ruby,Object,Model View Controller,Methods,在我的应用程序中,我有用户表和活动表-用户有三种类型的活动。我还有一个周数表-每个活动都有一组周数,并且用户拥有这些活动。因此周属于用户和活动,而活动属于用户。下面是我的用户表: class SorceryCore < ActiveRecord::Migration def change create_table :users do |t| t.string :first_name t.string :surname t.integer :previou
用户
表和活动
表-用户
有三种类型的活动
。我还有一个周数
表-每个活动
都有一组周数
,并且用户拥有这些活动。因此周
属于用户
和活动
,而活动
属于用户
。下面是我的用户
表:
class SorceryCore < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :first_name
t.string :surname
t.integer :previous_award
t.integer :chosen_award
t.string :email, :null => false
t.string :crypted_password
t.string :salt
t.timestamps
end
add_index :users, :email, unique: true
end
end
是否有一种方法可以使用默认值为每个与当前用户相关的活动自动创建这些周对象
更新:
周模型:
class Week < ActiveRecord::Base
belongs_to :activities
belongs_to :users
end
classweek
活动模式:
class Activity < ActiveRecord::Base
belongs_to :user
has_many :weeks, dependent: :destroy
$activity_type_var = 1;
end
类活动
用户模型:
class User < ActiveRecord::Base
has_many :activities, dependent: :destroy
has_many :weeks, dependent: :destroy
authenticates_with_sorcery!
validates :password, length: { minimum: 3 }
validates :password, confirmation: true
validates :email, uniqueness: true, email_format: { message: 'has invalid format' }
end
class用户
您可以在活动模型上创建后使用活动记录回调,并在创建活动对象后创建周对象
如果我理解您的权利,请在您的活动模型中添加:
after_create :create_weeks
def create_weeks
user.chosen_award.times do
weeks.create(user: user, week_num: 1) #add your default values
end
end
在创建活动对象后,您可以在活动模型上使用活动记录回调,并在创建活动对象后创建周对象
如果我理解您的权利,请在您的活动模型中添加:
after_create :create_weeks
def create_weeks
user.chosen_award.times do
weeks.create(user: user, week_num: 1) #add your default values
end
end
ActiveRecord回调是一个很好的选择。我还建议您将:activity_type列重命名为just:type。然后,您可以使用开箱即用的单表继承,如果我理解正确的话,它正是您所需要的 ActiveRecord回调是一个不错的选择。我还建议您将:activity_type列重命名为just:type。然后,您可以使用开箱即用的单表继承,如果我理解正确的话,它正是您所需要的 为什么您需要周
指的是用户
,因为活动
指的是用户
,周
指的是活动
?也许我没有?我认为我需要建立这种关系,但你可能是对的,我不认为我需要在周表中包括用户id为什么你需要week
指user
,因为activity
指的是user
和week
指的是activity
呢?也许我没有?我认为我需要建立这种关系,但你可能是对的,我认为我不需要在week表中包含用户id
class User < ActiveRecord::Base
has_many :activities, dependent: :destroy
has_many :weeks, dependent: :destroy
authenticates_with_sorcery!
validates :password, length: { minimum: 3 }
validates :password, confirmation: true
validates :email, uniqueness: true, email_format: { message: 'has invalid format' }
end
after_create :create_weeks
def create_weeks
user.chosen_award.times do
weeks.create(user: user, week_num: 1) #add your default values
end
end