问题标签 [model-associations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - cakephp 由关联的另一个模型字段排序
只是一个关于 cakePHP 查找操作中 orderBy 的快速问题。假设我有 3 个相互关联的模型。当我find('all')
对我的 3 个模型中的任何一个进行 cakePHP 查询时,我得到的结果还包括来自其他 2 个模型的数据。例如,假设我的模型是:
如果我做$this->find('all')
inside UsersController
,因为我的三个模型链接在一起,我会得到这样的东西:
我的问题是,虽然我的find('all')
查询是在User
模型上启动的,但是否可以orderBy
让我们说created
模型中的字段School
?
请让我知道这是否可能
谢谢
ruby-on-rails - 有很多:通过关联未找到
我有两个模型可以添加标签。
- 播放器
- 票
我有一个Tag
属于两者的模型,所以我有两个连接模型
- tag_ticket
- 标记播放器
我收到一个Could not find the association :tag_tickets in model Ticket
错误,但我的关联在那里。
我只关注Ticket
模型,但玩家模型应该看起来相似。
这是我的迁移TagTicket
ruby-on-rails-3 - Rails 3.2.1 嵌套形式和accepts_nested_attributes_for 返回::预期客户端(xxxxx),得到数组(xxxxx)“
请帮助我了解我哪里出错了,以便在我输入所有数据后尝试保存我的数据输入表单(复杂表单)时收到此消息?
我有五个模型如下:
我使用以下文章作为我的设计来源:
在我的 app/controller/contracts_controller.rb 我有以下内容:
我把复杂的形式放在一起如下:
部分字段:
我的第一个也是直接的问题是,一旦我在表单上输入了所有数据,然后按下“保存”按钮,我会得到以下信息:
ContractsController#Create 中的 ActiveRecord::Association TypeMisMatch。需要客户端(#xxxxxx),得到数组(#xxxxxx)。
另一个问题是,如果我在合同模型中包含“accepts_nested_attributes_for :codelines”,那么“units_alloc”属性就会从我的表单中消失。
对于这两个问题,我们将不胜感激任何帮助或指导。我花了一些时间阅读复杂表单,观看“复杂表单”railcasts,并且我已经阅读并重新阅读了有关关联的 Rails 指南以及有关 accept_nested_attributes_for 方法的 API 文档。显然,我对这些概念的理解还没有达到解决这些问题所需的全面理解,因此我寻求帮助。
更新 app/controllers/contracts_controller.rb
我在contracts_controller.rb的创建操作中添加了“raise params[:contract].to_s”作为第一行,输出如下:
更新 1
我将contracts_controller 新操作更改为:
通过合约构建 codelines 对象,然后通过 codelines 对象构建代码
通过合约构建clientlines对象,然后通过clientlines对象构建客户端
我还通过添加 accept_nested_attributes_for :clientlines, :codelines 以及添加 attr_accessor 行来更改我的合约模型。
我现在在我的参数中有带有关联名称的 nested_attribute_writers 但现在我的错误已更改为:
现在的问题是,“让 attr_accessor 引用所有关联是否正确?” 我的另一个问题是,“我必须使用 form_helper 来为客户端、代码和代码行创建记录吗?” 我问这个的原因是,尽管我在contracts_controller 中有构建操作,但它似乎仍然为零。如果第二个问题的答案是肯定的,你能指导我找到一些可以指导我构建 form_helper 的资源吗?我正在检查 RailsGuides。
谢谢。
更新 2
我一直在兜圈子,我将contracts_controller 的新操作更改为:
我还将我的合同模型改回:
最后,我删除了部分视图中与代码行有关的部分 _fields.html.haml,即:
现在我的参数有必要的“clients_attributes”和“codes_attributes”,因此表单保存到适当的表中。我仍然有一些问题,即代码行中的额外属性,'units_alloc' 和其他一些,但事情看起来更好。
ruby-on-rails - Rails 将记录删除到单独的表中
在 Rails 中,当要删除一条记录时,我想为这些删除的记录维护一个单独的表(在结构上类似于前者)。
实现这一点的一种方法是明显地从第一个模型中复制结构、验证和关联,并将其粘贴到已删除项目模型中。但是,这会导致大量代码冗余,并且不是可扩展的解决方案。
有没有一种方法可以在 Rails 中实现这一点而没有太多(或任何)代码冗余或可能比上述解决方案更具可扩展性的解决方案?
我正在使用 Ruby 1.9.3-p125 和 Rails 3.2。
更新
我确实考虑过在表格中使用一个额外is_deleted
的列,但是,我决定反对它,因为我不希望这个表格变得太大而且被删除的帖子弄得乱七八糟。我并不打算真正访问这些已删除的帖子——这些只是为了记录保存或存档目的而存储的。添加此列也会使访问此表变得更慢,更重要的是,我担心我可能会错过is_deleted == false
某个 SQL 条件中的检查 - 即使我default_scope
在模型中包含此检查。
ruby-on-rails-3 - 搜索 has_many :through 关联,包括中间模型
首先,题目。
我有三个模型,它们之间通过 has_many :trough 关联相互链接,如下所示:
我需要做的是我需要从用户记录中搜索以查找特定用户拥有的所有字符(:所有者字段为真)按名称排序。我已经坚持了几个小时了,所以我相信我可能会错过一个非常简单的答案......但到目前为止我尝试过的任何事情都没有奏效。
更新 发现了一些有用的东西:
不知道为什么 :chars_del 给出了错误,但是完整的表名完成了这项工作。
安德鲁,你的答案也很好,而且在数据库上要快一点,比很多。
mysql - Rails 协会和 Foreign_Key 混淆,我的外键应该是什么?
我似乎无法理解这个协会的外观和工作方式。我知道我并没有像命名约定那样非常规矩,但是我获取数据的源数据库也不是,我没有更改主键的自由,因为它们也与我使用的真实源数据库相关ETL 加载到我的 Rails 数据库中。
这些是我的模型:
这些是 MySQL 表模式:
这是我回来的错误,看起来活动记录正在执行一个带有空列名的查询:
我想返回给定类的属性。
更新:我为每个答案添加了外键声明。但仍然收到类似的错误。这是新的错误。
ruby-on-rails-3 - Rails 3 - 如何在关联中使用 Solr 进行搜索?
我已经一整天都在努力设置 Solr 以进行关联搜索。
我有一张桌子照片,这张桌子有一个标签,比如自然或城市。这些标签保存在标签表中。在表photo_tags中保存photo_id和tag_id。
当我尝试帮助自然这个词时,我想获得所有带有此标签的照片的声明,我尝试这样做(模型照片):
但是我没有得到带有标签的照片...
编辑- 我的协会:
ruby-on-rails - Rails - 创建回调和嵌套属性后的执行顺序
我对User和 UserProfile进行了简单的设置User
和建模。UserProfile
has_one :user_profile
belongs_to :user
但是我无法理解 Rails 如何定义after_create
回调的执行顺序并accepts_nested_attributes_for
在我的模型中定义。让我们考虑这两种情况。
情况1:
现在,如果我通过控制台创建一个用户(也带有 user_profile_attributes 哈希),after_create
则在创建用户及其用户配置文件后触发回调。
情况2:
如果after_create
放在顶部,
在创建用户之后但在创建用户配置文件之前触发回调。
这是预期的运作方式吗?Rails 在这里内部做什么?执行顺序是否简单地由代码的顺序决定?
我从哪里开始深入挖掘或调试呢?
cakephp - CakePHP 模型扩展关联
在查看 InventoryCategory 摘要时,我可以获取 Inventory 但不能获取 InventoryImages。CakePHP 报告的错误是[ Model "Inventory" is not associated with model "InventoryImage" ]。这些是我正在使用的模型:
ruby-on-rails-3 - 在 Rails 中用一个模型存储两个 has_many 关系的最简单方法?
A'user
有很多posts
,aproduct
有很多posts
,任何给定post
的都可以属于 auser
或 a product
,但不能同时属于两者。
我认为has_many :through
存储在posts_relationships
表格中并写成这样的关系:
和
会表达我的需要。 这是正确和最简单的方法吗? 这不是一个复杂的关系,所以我想尽可能简单地写它。