我有下一个型号
defmodule App.User do
use App.Web, :model
alias App.User
schema "users" do
field :name, :string
has_many :roles_users, App.RolesUser
has_many :roles, through: [:roles_users, :role]
timestamps
end
end
defmodule App.Role do
use App.Web, :model
schema "roles" do
has_many :roles_users, App.RolesUser
has_many :users, through: [:roles_users, :user]
field :name, :string
timestamps
end
end
defmodule App.RolesUser do
use App.Web, :model
schema "roles_users" do
belongs_to :role, App.Role
belongs_to :user, App.User
timestamps
end
end
Run Code Online (Sandbox Code Playgroud)
是为了多对多的关系.我要显示的控制器是
def index(conn, _params) do
users = Repo.all(User)
|> Repo.preload(:roles)
render(conn, "index.json", users: …Run Code Online (Sandbox Code Playgroud) 我是Ember的新手,我正在创建一个具有一些模型关系的App.
这些是我的模特
// models/user.js
export default DS.Model.extend({
name: DS.attr('string'),
role: DS.belongsTo('role')
});
// models/role.js
export default DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)
我的新用户路线是
import Ember from 'ember';
export default Ember.Route.extend({
model: function(){
return Ember.RSVP.hash({
newUser: this.store.createRecord('user'),
roles: this.store.findAll('role'),
});
}
});
Run Code Online (Sandbox Code Playgroud)
想法是获取角色并在表单中的选择视图中进行选择
这是我创建新用户的模板
<form {{ action "save" on="submit" }}>
{{ input value=newApplicant.name class="form-control" }}
<select name="role" class="form-control" value="role.value">
{{#each model.roles as |role|}}
<option value="{{role.id}}">{{role.name}}</option>
{{/each}}
</select>
Run Code Online (Sandbox Code Playgroud)
在此步骤之前一切正常,我选择了正确的数据,但我想保存,我不知道如何从表单中获取角色ID并插入用户
这是我的新控制器
import Ember from 'ember';
export default Ember.Controller.extend({
newUser: Ember.computed.alias('model.newUser'),
roles: null,
// …Run Code Online (Sandbox Code Playgroud) 我有这种格式的一些数据
[{
"_id" => "20",
"value" => 1
}, {
"_id" => "19",
"value" => 1
}, {
"_id" => nil,
"value" => 8
}, {
"_id" => "27",
"value" => 1
}, {
"_id" => "25",
"value" => 3
}, {
"_id" => "28",
"value" => 1
}]
Run Code Online (Sandbox Code Playgroud)
我想将相同的值与"_id"键合并,并将"值"值相加.
欲望输出
[{
"_id" => "20",
"value" => 1
}, {
"_id" => "19",
"value" => 2
}, {
"_id" => nil,
"value" => 8
}, ...]
Run Code Online (Sandbox Code Playgroud)
有一种优雅的方式来做到这一点?
我试过两个循环,但我认为这不是最好的方法.