gpt4 book ai didi

ruby-on-rails - 将参数集合从 Controller 传递到模型会破坏 MVC 吗?

转载 作者:行者123 更新时间:2023-12-04 05:49:23 27 4
gpt4 key购买 nike

我想将params集合从controller传递给model来解析过滤和排序条件。模型中有一个从 Controller 获取参数的方法会破坏 MVC 吗?

最佳答案

这取决于。您正在将数据散列传递给模型并说“理解这一点”。

class Model < ActiveRecord::Base
def update_from_params(params)
....
end
end

class ModelsController < ActionController::Base
def update
...
@model.update_from_params(params)
end
end

这没关系。但是您可能会发现自己想要通过许多不同的操作来做到这一点。您不太可能在每种情况下都使参数完全相同,因此您需要在模型上使用多种方法,每个方法一个:

class Model < ActiveRecord::Base
def update_from_update_params(params)
# do stuff
end

def update_from_settings_params(params)
# do different stuff
end

end

class ModelsController < ActionController::Base
def update
...
@model.update_from_update_params(params)
end

def change_settings
...
@model.update_from_settings_params(params)
end
end

这不行,您要让模型执行 Controller 工作。一个合理的中途之家是在您的模型上创建一个方法来接受规范数据哈希,然后在 Controller 中的参数和规范哈希之间进行转换:

class Model < ActiveRecord::Base
def update_from_data(hash)
validate_data!(hash)
# do stuff
end
end

class ModelsController < ActionController::Base
def update
...
@model.update_from_data(translate_update_params)
end

def change_settings
...
@model.update_from_data(translate_change_settings_params)
end
end

尽管您应该确保仔细记录模型接受的数据哈希格式。实际上,我们甚至使用 YAML 验证库 (Rx) 来确保模型只接受有效数据。

很抱歉回答太长,但我没有时间写一个较短的答案;)。

关于ruby-on-rails - 将参数集合从 Controller 传递到模型会破坏 MVC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/344263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com