Rails: 如何使用服务在银行中保存和更新数组
Rails: How to save and update array in bank with service
我是 Rails 的新手,也是一名英语学生,我正在使用 Google 在这里翻译成 post。
我想知道如何保存 CNAES 数组以及我使用的关系是否正确:
这是银行:
models - relationships:
class User < ApplicationRecord
has_many :user_cnae_classifications
has_many :cnae_classifications, through: :user_cnae_classifications
end
class CnaeClassification < ApplicationRecord
belongs_to :user
belongs_to :cnae_classification
has_many :user_cnae_classifications
has_many :users, through: :user_cnae_classifications
end
我的 users_controller 调用服务:
def create
@user = User.new(user_params)
if @user.save
SaveUserCnaeClassifications.new(@user, user_cnae_classifications_param).call
render json: @user, status: 200
else
render json: {errors: @user.errors}, status: 422
end
end
private
def user_cnae_classifications_param
param = params.require(:user).permit(
cnae_classifications: []
)
param[:cnae_classifications]
end
这是我无法保存的服务 - 正在建设中
class SaveUserCnaeClassifications
def initialize(user, cnae_classifications)
@user = user
@cnae_classifications = cnae_classifications
end
def call
return if @cnae_classifications.nil?
user.cnae_classifications != cnae_classifications
end
private
end
我的关系正确吗?
我如何在我的服务中保存 CNAES 阵列?
CNAE = 公司在巴西提供的服务类型的标识号。
一个用户可能有多个 CNAE,并且可以根据需要更新 CNAES。
任何website/blog/tips对于相关研究都会有很大的帮助。谢谢
您可以使用accepts_nested_attributes
示例:
class User < ApplicationRecord
has_many :user_cnae_classifications
has_many :cnae_classifications, through: :user_cnae_classifications
accepts_nested_attributes_for :cnae_classifications
end
您不需要 class SaveUserCnaeClassifications
。
我是 Rails 的新手,也是一名英语学生,我正在使用 Google 在这里翻译成 post。
我想知道如何保存 CNAES 数组以及我使用的关系是否正确:
这是银行:
models - relationships:
class User < ApplicationRecord
has_many :user_cnae_classifications
has_many :cnae_classifications, through: :user_cnae_classifications
end
class CnaeClassification < ApplicationRecord
belongs_to :user
belongs_to :cnae_classification
has_many :user_cnae_classifications
has_many :users, through: :user_cnae_classifications
end
我的 users_controller 调用服务:
def create
@user = User.new(user_params)
if @user.save
SaveUserCnaeClassifications.new(@user, user_cnae_classifications_param).call
render json: @user, status: 200
else
render json: {errors: @user.errors}, status: 422
end
end
private
def user_cnae_classifications_param
param = params.require(:user).permit(
cnae_classifications: []
)
param[:cnae_classifications]
end
这是我无法保存的服务 - 正在建设中
class SaveUserCnaeClassifications
def initialize(user, cnae_classifications)
@user = user
@cnae_classifications = cnae_classifications
end
def call
return if @cnae_classifications.nil?
user.cnae_classifications != cnae_classifications
end
private
end
我的关系正确吗? 我如何在我的服务中保存 CNAES 阵列? CNAE = 公司在巴西提供的服务类型的标识号。
一个用户可能有多个 CNAE,并且可以根据需要更新 CNAES。
任何website/blog/tips对于相关研究都会有很大的帮助。谢谢
您可以使用accepts_nested_attributes
示例:
class User < ApplicationRecord
has_many :user_cnae_classifications
has_many :cnae_classifications, through: :user_cnae_classifications
accepts_nested_attributes_for :cnae_classifications
end
您不需要 class SaveUserCnaeClassifications
。