小编yor*_*bro的帖子

Ember-data延迟加载与"链接"属性的关联

我有一个模范老师,有很多学生.模型定义如下:

App.Teacher = DS.Model.extend({
  email: DS.attr('string'),
  students: DS.hasMany('student')
});

App.Student = DS.Model.extend({
  teacher: DS.belongsTo('teacher'),
});
Run Code Online (Sandbox Code Playgroud)

当教师登录时,服务器返回教师的JSON表示:

{
  id: 1,
  email: "abc@example.com",
  links: {
    students: /teacher/1/students
  }
}
Run Code Online (Sandbox Code Playgroud)

在登录控制器中,然后我将这些数据推送到商店并将其存储在Session控制器的属性中:

this.set('currentUser', this.get('store').push('teacher', teacherJson))
Run Code Online (Sandbox Code Playgroud)

我想延迟加载students关联,所以我使用了API中定义的"链接"格式(http://emberjs.com/api/data/classes/DS.Store.html#method_push).所以,理想情况下,每当我打电话

App.SessionController.get('currentUser').get('students')
Run Code Online (Sandbox Code Playgroud)

它会students通过发送GET请求来加载关联的/teacher/1/students.但这从未发生过.为什么没有触发请求?

ember.js ember-data

9
推荐指数
1
解决办法
4252
查看次数

将模型推送到商店时更新视图

我的应用程序中有一个非常复杂的页面,显示了许多不同的模型.我通过/updatesREST调用实时更新其中几个模型.我传递一个last_request_timestamp参数,它返回自上次调用以来创建或修改的模型.

我使用将模型添加到商店store.push(model, model_json).但是,在推送模型后,模板不会更新.如何确保商店中的模型与视图之间存在绑定?

ember.js ember-data

6
推荐指数
1
解决办法
3625
查看次数

当在PUT请求中包含响应时,Ember Data重新加载关联

我有以下简单的子父关系.

App.Parent = DS.Model.extend({
  children: DS.hasMany('child')
});

App.Child = DS.Model.extend({
  parent: DS.belongsTo('parent')
});
Run Code Online (Sandbox Code Playgroud)

我有一种情况,我更新一个实例,Child并用a持久化更改save().这会发出PUT请求.通常,PUT请求返回a 204 No Content但是我返回一个200 OK带有模型的JSON序列化作为响应,例如:

{
  child: {
    parent: 1
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致父母的重新加载.所以在此之后,/parents/1Ember Data发出了GET请求.我怎样才能防止这种情况发生?

ember.js ember-data

5
推荐指数
1
解决办法
282
查看次数

Safari 中的边距百分比与 Chrome/Firefox 不同

我在 Safari 中遇到了这个奇怪的错误,这真的很烦人,因为我找不到解决方案。我在 StackOverflow 和互联网上看过类似的问题,但没有人解决我的问题。

有问题的示例在http://jsfiddle.net/WQnVu/5/ 上。所以基本上我有一个图像(这里是一个固定大小的)和两个容器:一个内部和一个外部。图像相对于外部容器绝对定位。为了相对于外部容器的宽度重新定位图像,我然后做一个负百分比的 margin-top。代码如下。

<div class="outer">
    <div class="inner">
        <div class="image"></div>
    </div>
</div>


.outer {
    height: 510px;
    width: 1024px;
    background-color: red;
    position: relative;
}

.inner {
    height: 100%;
    width: 100%;
    background-color: blue;
 }

 .image {
    width: 550px;
    height: 380px;
    position: absolute;
    top: 65%;
    right: 0;
    margin-top: -26%;
    background-color: green;
}
Run Code Online (Sandbox Code Playgroud)

边距百分比应该是相对于图像包含块宽度(在这种情况下是内部容器)。这确实适用于 Firefox 和 Chrome。然而,在 Safari 中,它计算相对于块本身高度的边距,因此相对于图像的高度!

我不知道如何解决这个问题。我真的需要保证金百分比,因为该网站是响应式的。容器的宽度相应地发生变化,但高度保持不变。这就是为什么我需要一些与容器宽度相关的东西。如果有专门针对 Safari 的黑客,我很乐意使用它,但据我所知,没有这样的事情。

如果有人能想出解决这个问题的方法,那就太好了。

亲切的问候,

约兰

css safari cross-browser

4
推荐指数
1
解决办法
1万
查看次数

验证在另一个表上具有条件时,数据库中的唯一性验证

当验证有条件但我的要求已经改变时,我在数据库中的唯一性验证中询问了类似的问题,因此这个问题.

当有多个进程时,在Rails中使用唯一性验证是不安全的,除非在数据库上强制执行约束(在我的情况下是PostgreSQL数据库,所以请参阅http://robots.thoughtbot.com/the-perils-of-uniqueness-validations).

在我的例子中,唯一性验证是有条件的:只有在另一个模型上的另一个属性变为真时才应该强制执行.所以我有

class Parent < ActiveRecord::Base
  # attribute is_published
end

class Child < ActiveRecord::Base
  belongs_to :parent

  validates_uniqueness_of :text, if: :parent_is_published?

  def parent_is_published?
    self.parent.is_published
  end
end
Run Code Online (Sandbox Code Playgroud)

因此模型Child有两个属性:( parent_id与...关联Parent)和text(文本属性).该模型Parent有一个属性:( is_published布尔值).如果是真的,那么text在所有类型的模型中应该是唯一的.Childparent.is_published

使用http://robots.thoughtbot.com/the-perils-of-uniqueness-validations中建议的唯一索引太过限制,因为无论is_published的值如何,它都会强制执行约束.

是否有人知道PostgreSQL数据库上依赖于另一个表的"条件"索引?验证具有条件,数据库唯一性验证的解决方案是您的条件取决于同一个表上的属性.还是另一种解决方法?

postgresql indexing database-design ruby-on-rails unique-index

4
推荐指数
1
解决办法
646
查看次数