小编egg*_*rop的帖子

为什么在多态关联中没有外键?

为什么在多态关联中没有外键,例如下面表示为Rails模型的外键?

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class Article < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

class Photo < ActiveRecord::Base
  has_many :comments, :as => :commentable
  #...
end

class Event < ActiveRecord::Base
  has_many :comments, :as => :commentable
end
Run Code Online (Sandbox Code Playgroud)

database ruby-on-rails foreign-key-relationship polymorphic-associations

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

为什么Rails迁移定义应用程序中的外键而不是数据库中的外键?

如果我定义一个CustomerOrder模型,其中Customer"有很多" OrdersOrder"属于" Customer,在Rails中我们谈论Order有一个外键到Customer通过customer_id但我们并不是说这是在数据库中强制执行.

由于Rails没有将其定义为数据库级约束,因此存在数据完整性被违反的风险,可能在应用程序之外(或者如果同时收到请求,则在内部?),除非您手动在数据库中强制执行约束.

为什么Rails没有在数据库级别定义外键,或者有没有办法让Rails这样做?

class Customer < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
    belongs_to :customer
end

ActiveRecord::Schema.define(:version => 1) do

  create_table "customers", :force => true do |t|
    t.string   "name"
  end

  create_table "orders", :force => true do |t|
    t.string   "item_name"
    t.integer  "customer_id"
  end

end
Run Code Online (Sandbox Code Playgroud)

database referential-integrity ruby-on-rails foreign-keys

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

必要的可空外键的任何示例?

Customers
 customer_id

Orders
 order_id
 customer_id fk
Run Code Online (Sandbox Code Playgroud)

如果我有两个表并在Orders表中的customer_id上定义了一个外键,通过允许它为null,我说我可以订购一个没有客户关联的订单.因此,可以为空的外键的概念似乎与外键的目的不一致,即强制执行此约束.

是否有一个简单的例子表明可以使用可以为空的外键?或支持允许他们的论据?

database foreign-key-relationship

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

是否有选项可以生成脚手架而不会产生迁移?

在Rails中困扰我的一件事是脚手架产生我并不总是需要的迁移.

有没有办法在没有相应迁移的情况下生成脚手架?

migration ruby-on-rails

17
推荐指数
1
解决办法
8511
查看次数

<div>标签是否是<p>标签的不良替代品?

我看到<p>标签在其他人的代码中使用了很多,但从未在我自己的工作中使用它.

我想知道这对使用<div>标签有什么好处?

  1. <p>标签合并到我的页面中是否有任何好处?

  2. 仅使用<div>标签没有任何缺点<p>吗?

html paragraph

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

合并后推送到远程存储库"创建新的远程磁头" - 是不是很糟糕?

  1. initialized是一个Mercurial项目Machine A,committed我的更改和uploaded它们到远程存储库.

  2. 然后我在cloned那个存储库上Machine B,committed一些额外的更改和uploaded它们到同一个远程存储库.

在这两种情况下,我都使用相同的命令上传了更改:

hg push https://username:password@domain/user/repository/
Run Code Online (Sandbox Code Playgroud)

现在我回到了机器A,我pull从远程存储库开始,merg使用**KDiff3 GUI工具使用命令****两个变更集之间的任何变化:

hg pull
hg merge
hg commit
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在此拉取和合并之后将最新的更改从机器A推回到远程存储库时,我收到以下消息:

hg push https://username:password@domain/user/repository/
pushing to https://username:password@domain/user/repository/
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)
Run Code Online (Sandbox Code Playgroud)

为什么会说"你忘了合并"? - 我完成了合并.

强迫推动并创造"新的遥控头"是不是很糟糕?

如果是这样,我该如何避免这种情况?

更新:

hg merge再次跑了" "并得到了这个输出:

5 files updated, 1 …
Run Code Online (Sandbox Code Playgroud)

merge mercurial push repository

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

你应该只在局部使用局部变量吗?

使用局部变量似乎是可取的,可以在应用程序范围内使用,以避免整个应用程序的依赖.

但是在单个控制器中,引用您知道将在使用partial的所有操作中可用的实例变量似乎是可以接受的.

但是,如果执行此操作,则可能存在风险,即特定操作可能会更改为不再向其视图提供实例变量.部分将停止工作.但是,我不确定这是否真的是一个问题,因为常规视图会遇到相同的风险.

如果在部分中引用实例变量,这有关系吗?

ruby-on-rails instance-variables local-variables partial

7
推荐指数
1
解决办法
2299
查看次数

has_many在另一边是否需要belongs_to?

如果Parent has_many :children,必须 Child :belongs_to :parent吗?

ruby-on-rails associations

7
推荐指数
2
解决办法
1672
查看次数

分号作为Rails控制台中的语句分隔符

Rails控制台似乎不喜欢由分号分隔的同一行上的多个ruby语句.每当我这样做,下一行开头,?>我发现只执行了第一个语句.你是否必须将每个声明放在一个单独的行上?

>> user = User.new
user = User.new

=> #<User id: nil, username: "", hashed_password: "", first_name: "", last_name: "", email: "", display_name: "", user_level: 0, created_at: nil, updated_at: nil, posts_count: 0>

>> user.username = "John"; hashed_password = "John"; first_name = "John"; last_name = "coltrane"; email = "John@coltrane.com"; display_name = "Johndispay"; user_level = 9; 
user.username = "John"; hashed_password = "John"; first_name = "John"; last_name = "coltrane"; email = "John@coltrane.com"; display_name = "Johndispay"; user_level = 9; 

?> user.save …
Run Code Online (Sandbox Code Playgroud)

console ruby-on-rails

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

使用MessageClicks表跟踪已读/未读的用户消息?

我正在尝试为我的应用程序的用户实现一个简单的收件箱系统,以便可以相互发送基本消息 - 就像在许多论坛系统中一样.

如果User has_many :messages,自上次阅读以来,如何跟踪并通知用户未读的消息?

我认为点击Messages屏幕链接需要记录在一个单独的表格中(MessagesClicks).

这是最好的方法吗?

那么我检查MessagesClicks表格,看看自上次点击链接以来是否有任何新消息 - 基于一个last_clicked或多个updated_at字段.

notifications ruby-on-rails messages

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