0

我有一个我正在开发的具有用户和位置的 Rails 站点

一个用户有很多位置,一个位置可以有很多用户,所以我有很多...

has_many :through

我的问题是……大多数用户只有一个位置,只有一个位置,所以当他们登录时,我应该将它放在 url 中还是存储在会话中

/some_location/users

或者我应该使用这样的方法将位置存储在会话中

def current_location
  @location ||= Location.find(session[:location_id])
rescue ActiveRecord::RecordNotFound
  @location = current_user.locations.first
  session[:location] = @location.id
  @location
end

并让网址更清洁

/users

如果我确实使用路径中的位置名称以上述方式执行此操作,我将如何执行路由

4

2 回答 2

0

对于拥有多个位置的用户,下面的代码将返回随机位置

@location = current_user.locations.first

您可以优先选择位置 - 比如按字母顺序

@location = current_user.locations.order("name DESC").first

但是,当用户更改位置时,他的 URL 将被映射到不同的位置。它可能是也可能不是你想要的。

于 2012-05-23T05:32:49.810 回答
0

如果用户不需要直接访问该位置(或者如果您有一种简单的方法让他们切换位置),您可能想要使用会话。对于大多数只有一个位置的用户来说,这将使导航更简单、更容易混淆,同时允许您以不太复杂的方式处理具有多个位置的用户的边缘情况。

于 2012-05-22T19:24:58.717 回答