根据定义,连接表(桥接表/链接表)用于多对多关系,如下所示:
CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE Permissions
(
PermissionKey varchar(50) PRIMARY KEY,
PermissionDescription varchar(500) NOT NULL
)
--This is the junction table.
CREATE TABLE UserPermissions
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
PRIMARY KEY (UserLogin, PermissionKey)
)
Run Code Online (Sandbox Code Playgroud)
但是它也不能像一对多关系那样容易使用,就像在这个例子中一个用户与许多订单相关联:
(我不太了解数据库,所以如果我误解了某些内容,请纠正我.)
CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE Orders
( …Run Code Online (Sandbox Code Playgroud) 我可以理解为什么你需要一个类变量来跟踪已经在该类中实例化的对象的总数.
我可以理解为什么你需要一个实例变量来存储该类中特定对象的属性.
但是类实例变量我似乎无法证明是正确的.
据我了解,它们就像类变量一样,除了它们对类变量的方式不可见.
似乎这种用途非常有限.还是我错了?有没有人在代码中找到了很好的类实例变量?或者你能举例说明这种细微差别有价值的情况吗?
所述的jquery负载方法从远程文件加载HTML和它注入到DOM.例如,要将feeds.html文件加载到具有Feed标识的div中,您可以执行以下操作:
$("#feeds").load("feeds.html");
Run Code Online (Sandbox Code Playgroud)
这是使用Rails replace_html方法调用partial的替代方法,还是功能略有不同?
page.replace_html 'feeds', :partial => 'main/feeds',
:locals => {:feed => @feed_data }
Run Code Online (Sandbox Code Playgroud)
[编辑]:正如Craig Stuntz所指出的,replace_html返回Javascript而不是HTML - 这有什么优势/劣势?它只是意味着您返回的片段具有更多功能,就像使用Javascript的网页比常规HTML页面更强大一样吗?还是有其他原因返回Javascript而不是HTML?
假设我在Rails迁移中创建了一个表,指定省略ID列:
create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
Run Code Online (Sandbox Code Playgroud)
后来我决定将ID列添加为主键,因此我创建了一个新的迁移:
class ChangeCategoriesToRichJoin < ActiveRecord::Migration
def self.up
add_column :categories_posts, :id, :primary_key
end
def self.down
remove_column :categories_posts, :id
end
end
Run Code Online (Sandbox Code Playgroud)
但是当我迁移后查看表格时,它看起来像这样:
category_id
post_id
id
Run Code Online (Sandbox Code Playgroud)
id列位于表中的最后一个位置,而通常id列是第一个.
有没有办法更改ChangeCategoriesToRichJoin迁移以坚持在表中的category_id列之前创建的id列?
或者我是否需要删除表并在"创建表"定义中添加列?
<% form_tag(:action=>'update', :id=>@album.id) do %>
Title: <%= text_field(:album, :title) %><br>
Artist: <%= text_field(:album, :artist) %><br>
Genre: <%= text_field(:album, :genre) %><br>
Release Date: <%= datetime_select(:album, :release_date, :start_year=>1960) %><br>
<%= submit_tag("Update") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我不得不在form_tag中说@ album.id但在text_field中我不得不说:专辑.我在我的观点中一直混淆这些,并且从不真正知道是否使用@符号或符号.是否有一个简单的规则可以明确说明什么时候使用?
以下代码工作正常:
person = {:a=>:A, :b=>:B, :c=>:C}
berson = {:a=>:A1, :b=>:B1, :c=>:C1}
kerson = person.merge(berson) do | key, oldv, newv |
if key == :a
oldv
elsif key == :b
newv
else
key
end
end
puts kerson.inspect
Run Code Online (Sandbox Code Playgroud)
但是如果我return在"if block"里面添加,我会收到一个错误:
person = {:a=>:A, :b=>:B, :c=>:C}
berson = {:a=>:A1, :b=>:B1, :c=>:C1}
kerson = person.merge(berson) do | key, oldv, newv |
if key == :a
return oldv
elsif key == :b
return newv
else
return key
end
end
puts kerson.inspect
Run Code Online (Sandbox Code Playgroud)
上面代码的错误是:
unexpected …Run Code Online (Sandbox Code Playgroud) Foo = Class.new
Foo.instance_eval do
def instance_bar
"instance_bar"
end
end
puts Foo.instance_bar #=> "instance_bar"
puts Foo.new.instance_bar #=> undefined method ‘instance_bar’
Run Code Online (Sandbox Code Playgroud)
我的理解是,在对象上调用instance_eval应该允许您为该对象定义实例变量或方法.
但是在上面的示例中,当您在类Foo上调用它来定义instance_bar方法时,instance_bar将成为可以使用"Foo.instance_bar"调用的类方法.很明显,这段代码没有创建实例方法,因为Foo.new.instance_bar导致"未定义的方法'instance_bar'".
为什么instance_eval在此上下文中定义类方法而不是实例方法?
如果您的同事"打开"("monkeypatches")Ruby中的一个类并重新定义了您需要使用的一些重要功能,那么如何在不破坏已经依赖于其monkeypatched定义的系统的情况下访问原始的monkeypatched功能?
如果我有两个表,客户和订单,并且我想查找客户的最新订单,我将如何使用GQL在Google App Engine上执行此操作?
通常,我会通过订单表中存在的外键customer_id加入这两个表.
select orders.* from customers, orders
where customers.customer_id = orders.customer_id
and orders.order_id = (select top 1 sub_orders.order_id from orders sub_orders
where sub_orders.customer_id = orders.customer_id
order by sub_orders.order_date desc)
Run Code Online (Sandbox Code Playgroud)
但是,由于Google App Engine似乎无法进行加入,因此我不确定如何解决此限制.任何建议,将不胜感激.
在Spring MVC中,Dispatcher servlet用作"前端控制器"来处理所有应用程序请求并适当地路由它们.
是否可以在Rails中使用这种方法,或者是否需要为每种类型的操作编写单独的控制器而不需要"交通警察"(前端控制器)指导流程?
ruby ×4
ajax ×1
class ×1
class-method ×1
database ×1
dispatcher ×1
dom ×1
gql ×1
inheritance ×1
join ×1
jquery ×1
many-to-many ×1
migration ×1
one-to-many ×1
reverse ×1
scope ×1
symbols ×1