我正在尝试在模型中复制嵌套属性。通过GUI创建新对象时传递的参数是:
tenant_script_call“=> {”name“=>”TEST_01“,”script_id“=>”12“,”script_call_arguments_attributes“=> {”0“=> {”script_argument_id“=>” 16“,”argumentable_id“=>”43“,”argumentable_type“=>”AstQueue“},”1“=> {”script_argument_id“=>”17“,”value“=>”“} ,“2”=> {“script_argument_id”=>“18”,“value”=>“”},“3”=> {“script_argument_id”=>“19”,“argumentable_id”=> ;“250”,“argumentable_type”=>“播放列表”}}},“提交”=>“提交”}
我正在尝试在我的控制器中自动执行此操作。我试过了:
cashier[0].cashierclients.addLast(l.get(0));
和
// the error happens here
cashier[1].cashierclients.size();
以及一些不同的变化。有人可以指出我正确的方向或分享一些知识/智慧吗?
答案 0 :(得分:0)
您可以创建私人方法
select employees.EmpID, sum(workhours.hoursworked) as 'TotalHours',
firstname, lastname,
ISNULL(sum(workhours.hoursworked),0) * ISNULL(min(rate),0) AS 'TotalRate'
from employees inner join workhours
on employees.empid = WorkHours.EmpID
LEFT JOIN BillingRates ON employees.titleid=billingrates.titleid
AND employees.level = billingrates.level
where WH_Month = 4
group by LastName, firstname, employees.EmpID
现在,只要你想创造。你这样做。
def tenant_params
params.require(:tenant).permit(:column_names)
end
答案 1 :(得分:0)
首先,你的电话有点瑕疵。在这种情况下,location
和self
是什么?
您的模型定义应该是这样的:
class TenantScriptCall < ActiveRecord::Base
has_many :script_call_arguments
accepts_nested_attributes_for :script_call_arguments
end
然后,如果你想从UI传递输入:
TenantScriptCall.new(params[:tenant_script_call])
应该有用。
最终你应该用permit
来过滤输入,就像@hemali指出的那样。
答案 2 :(得分:0)
这对我有用:
def auto_create_destination_for_ast_queue(location)
auto_destination_name_queue = AstQueue.last.name.split(/-/)[0]
TenantScriptCall.new(:name => auto_destination_name_queue,
:location_id => location.id,
:script_id => 12,
:script_call_arguments_attributes => [{:script_argument_id => 16,
:argumentable_id => AstQueue.last.id,
:argumentable_type => "AstQueue"},
{:script_argument_id => 19,
:argumentable_id => 3,
:argumentable_type => "Playlist"}]).save
end