使用状态位置作为beta应用程序中用户创建的基础

时间:2011-09-21 04:43:22

标签: ruby-on-rails-3 geolocation

我正在设置我的Rails应用程序的主页,以确定新用户是成为测试版测试人员还是只是注册并在应用程序打开时更新记录在数据库中。

目标是用户输入他们的信息,点击“注册”后,HTML5地理定位等内容将决定他们的位置。根据他们所处的状态,他们可以输入我的应用的测试版,创建个人资料,然后开始使用;或者,当应用程序向更多用户开放时,他们会注册并进入数据库。

我知道有很多方法可以获得该位置,但是有没有办法设置它,因此状态是决定用户是创建还是存储在数据库中的决定因素?

1 个答案:

答案 0 :(得分:1)

我会建议这样的事情:

def USState < ActiveRecord::Base
  # columns = :id, :name, :abbreviation, :available_for_beta, ...

  has_many :users

  def self.find_by_coordinates (latitude, longitude)
    # code here to determine what state coordinates belong to
  end

  ...
end

def User < ActiveRecord::Base
  # columns = :id, :username, :password, :salt, etc.

  attr_accessor :latitude, :longitude

  belongs_to :state, :class_name => "USState"

  before_create :set_state

  def set_state
    self.state = USState.find_using_coordinates(self.latitude, self.longitude)
  end

  def can_participate_in_beta?
    self.state.available_for_beta
  end

  ...
end

此刻未经测试,但这似乎是一种很好的方法,特别是如果您计划添加更多依赖于各州或省的功能。这种特殊的位置实现(USState)可以通过继承进一步增强,而且不费吹灰之力。

修改:误读了问题。删除了验证内容并添加了before_create hooks。