标签: model

Rails模型has_many有多个foreign_keys

相对较新的rails并尝试使用具有name,gender,father_id和mother_id(2个父项)的单个Person模型来建模一个非常简单的族"树".下面基本上是我想要做的,但显然我不能重复:has_many中的孩子(第一个被覆盖).

class Person < ActiveRecord::Base
  belongs_to :father, :class_name => 'Person'
  belongs_to :mother, :class_name => 'Person'
  has_many :children, :class_name => 'Person', :foreign_key => 'mother_id'
  has_many :children, :class_name => 'Person', :foreign_key => 'father_id'
end
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将has_many与2个外键一起使用,或者根据对象的性别更改外键?或者还有其他/更好的方式吗?

谢谢!

ruby model ruby-on-rails has-many

49
推荐指数
5
解决办法
2万
查看次数

Ruby on Rails:errors.add_to_base与errors.add

我已经读过,errors.add_to_base应该用于与对象相关的错误,而不是特定的属性.我无法概念化这意味着什么.有人可以举例说明我何时想要使用它们?

例如,我有一个乐队模型,每个乐队都有一个流派.当我验证某种类型的存在时,如果该类型丢失,是否应该将错误添加到基类中?

越多的例子越好

谢谢!

ruby validation model ruby-on-rails

49
推荐指数
3
解决办法
6万
查看次数

视图层中的DTO或域模型对象?

我知道这可能是一个古老的问题,但更好的做法是什么?在应用程序的所有层中使用域模型对象,甚至在JSP上直接将值绑定到它们(我使用的是JSF).或者将域模型对象转换为DAO或服务层中的DTO,并将轻量级DTO发送到表示层.

我被告知使用DTO是没有意义的,因为对数据库的更改将导致所有DTO的更改,而在任何地方使用模型对象只需要更改受影响的模型对象.然而,DTO的易用性和轻量级特性似乎超过了这一点.

我应该注意我的应用程序使用Hibernate模型对象并使用自己的自定义创建的模型对象(意味着没有绑定到任何数据库会话,总是分离).以上任一方案对严格的模型对象模式更有利吗?对于像Lazy Initialization Exceptions这样的事情,使用Hibernate是一个巨大的PITA.

我正在编辑这个问题,希望能够进一步讨论(不确定我是否正确行事):

我对模型对象的问题在于它们根本不灵活.下面的评论说应该设计应用程序,以便可以在所有层中使用模型对象.为什么?如果用户想要一个荒谬的功能,我应该告诉他们,"好吧,这对模型对象不起作用"?

简单而简单,有时候模型对象不起作用.你可能有:

public class Teacher {
    List<Student> students;
    [tons of other Teacher-related fields]
}
public class Student {
    double gpa;
   [tons of other Student-related fields]
}
Run Code Online (Sandbox Code Playgroud)

但也许你不需要所有这些信息.您只需要教师的姓氏,他们今年教授的学生人数,以及所有学生的平均GPA.在那种情况下你会做什么?检索完整的教师信息和学生关系,然后您的代码计入学生列表,然后计算内部所有gpas的总平均值?这似乎比简单地使用'String lastName','int numStudents'和'double combinedGpa'创建DTO更加努力;

听起来好像我已经考虑到了这些,但我还没有在一个应用程序中工作,在这个应用程序中,模型对象可以在每个实例中完全使用.具有不同寻常的用户需求的常规实际应用程序不能以这种方式工作.

model data-transfer-objects dto

49
推荐指数
3
解决办法
2万
查看次数

MVC:数据模型和视图模型

我在过去读过一些关于模型的MVC建议,说明你不应该为域和视图重用相同的模型对象; 但我一直没能找到任何人愿意讨论为什么这是不好的.

我认为创建两个独立的模型 - 一个用于域,一个用于视图 - 然后在它们之间进行映射会产生大量重复,加上繁琐的映射代码(其中一些可能会被像AutoMapper这样的东西减轻)很可能容易出错.

是什么让这两个问题的单独模型值得重复和映射代码的麻烦?

model-view-controller model separation-of-concerns

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

区分域,模型和实体与MVC

有人可以解释这3个概念以及它们之间在MVC框架方面的差异以及一个例子.对我来说,这些似乎几乎相同,似乎它们在某些文章中可互换使用,而在其他文章中则不然.

model-view-controller entity design-patterns model domain-object

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

如何在django中为我的模型设置两个字段主键

我有这样的模型:

class Hop(models.Model):
    migration = models.ForeignKey('Migration')
    host = models.ForeignKey(User, related_name='host_set')
Run Code Online (Sandbox Code Playgroud)

我想迁移和托管两者是主键.

python django model primary-key django-models

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

Magento - 在控制器和块之间传递数据

真的很快速和简单的问题,但我找不到一个合适的答案 - 什么是从控制器传递数据到Magento块的最佳方法.

如果它有所不同,我正在加载布局如下:

 $this->loadLayout(array('default', 'myModule_default'));

    $this->_initLayoutMessages('customer/session')
         ->_initLayoutMessages('catalog/session')
         ->renderLayout();
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,我一直在使用注册表如下:

在控制器中:

Mage::register('data', $data);
Run Code Online (Sandbox Code Playgroud)

在块中:

$data = Mage::registry('data');
Run Code Online (Sandbox Code Playgroud)

不知道这是否是最好的方法.

php variables model session-variables magento

46
推荐指数
2
解决办法
5万
查看次数

用pre_save()填充django字段?

class TodoList(models.Model):
    title = models.CharField(maxlength=100)
    slug = models.SlugField(maxlength=100)
    def save(self):
        self.slug = title
        super(TodoList, self).save()
Run Code Online (Sandbox Code Playgroud)

我假设上面是如何在将标题插入表TodoList时如何创建和存储slug,如果没有,请纠正我!

无论如何,我一直在研究pre_save()作为另一种方法,但无法弄清楚它是如何工作的.你如何用pre_save()做到这一点?

是这样的

def pre_save(self):
     self.slug = title
Run Code Online (Sandbox Code Playgroud)

我猜不是.这样做的代码是什么?

谢谢!

python database django triggers model

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

如何为Laravel/Eloquent模型设置默认属性值?

如果我尝试声明属性,像这样:

public $quantity = 9;
Run Code Online (Sandbox Code Playgroud)

...它不起作用,因为它不被视为"属性",而仅仅是模型类的属性.不仅如此,我还阻止访问实际存在的"数量"属性.

那我该怎么办?

php model laravel eloquent laravel-4

46
推荐指数
3
解决办法
6万
查看次数

如果父项有子记录,如何防止删除父项?

我已经查看了Ruby on Rails指南,我似乎无法弄清楚如果有父级记录,如果有人删除父记录.例如.如果我的数据库有CUSTOMERS并且每个客户可以有多个ORDERS,我想阻止有人在数据库中有任何订单时删除客户.如果客户没有订单,他们应该只能删除客户.

在定义模型之间的关联以强制执行此行为时,有没有办法?

model ruby-on-rails associations

45
推荐指数
2
解决办法
2万
查看次数